#include <stdio.h>

int main()
{
    // 本代码使用了差分法解决问题

    int l = 0 , m = 0 , u = 0 , v = 0 , num = 0; // 设立相关变量并初始化,等待使用
    
    scanf("%d %d" , &l , &m) ; // 输入l,m的值,确认有多少根树和要多少块区域作为地铁口
    
    int array [l + 1] ; // 建立一个数组,每一个元素代表一颗树

    for (int i = 0 ; i <= l ; i++) // 设立循环,初始化里面的所有的元素为0,代表没有被移除的状态
    {

        array [i] = 0 ;

    }
    
    for (int i = 0 ; i < m ; i++) // 循环的目的是根据区域的多少来选择多少次范围
    {
        
        scanf("%d %d" , &u , &v) ; // 输入一次区域的范围
        
        for (int j = u ; j <= v ; j++) // 将该区域的所有数组元素设定为1,代表被移除状态
        {
            
            array [j] = 1 ;
            
        }
        
    }
    
    for (int i = 0 ; i <= l ; i++) // 遍历数组中的所有元素
    {
        
        if (array [i] == 0) // 判断数组每个元素是否为0,如果是0则为未被移除状态。使得num变量加1表示存放1颗未被移除的树
        {
            
            num++ ;
            
        }
        
    }
    
    printf("%d" , num) ;
    
    return 0 ;
    
}